//----------------------------------------------------------------------------
// Anti-Grain Geometry - Version 2.4
// Copyright (C) 2002-2005 Maxim Shemanarev (http://www.antigrain.com)
//
// C# Port port by: Lars Brubaker
//                  larsbrubaker@gmail.com
// Copyright (C) 2007
//
// Permission to copy, use, modify, sell and distribute this software 
// is granted provided this copyright notice appears in all copies. 
// This software is provided "as is" without express or implied
// warranty, and with no claim as to its suitability for any purpose.
//
//----------------------------------------------------------------------------
// Contact: mcseem@antigrain.com
//          mcseemagg@yahoo.com
//          http://www.antigrain.com
//----------------------------------------------------------------------------

namespace AGG
{
    public interface IGenerator
    {
        void RemoveAll();
        void AddVertex(double x, double y, Path.FlagsAndCommand unknown);
        void Rewind(int path_id);
        Path.FlagsAndCommand Vertex(ref double x, ref double y);

        math_stroke.line_cap_e line_cap();
        math_stroke.line_join_e line_join();
        math_stroke.inner_join_e inner_join();

        void line_cap(math_stroke.line_cap_e lc);
        void line_join(math_stroke.line_join_e lj);
        void inner_join(math_stroke.inner_join_e ij);

        void width(double w);
        void miter_limit(double ml);
        void miter_limit_theta(double t);
        void inner_miter_limit(double ml);
        void approximation_scale(double approxScale);

        double width();
        double miter_limit();
        double inner_miter_limit();
        double approximation_scale();

        void shorten(double s);
        double shorten();
    };
}
